﻿/**
 * @file PyFITKPhyscisPropBeam.h
 * @brief 梁物理属性 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_PHYSICSPROP_BEAM_H___
#define _PY_PHYSICSPROP_BEAM_H___

#include <QString>
#include "FITKAcousticsPhysicsAPI.h"
#include "PyFITKPhyscisPropBase.h"

namespace Acoustics
{
    /**
     * @brief 梁物理属性 为python装饰器接口准备的封装类
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    class FITKAcousticsPhysicsAPI PyFITKPhyscisPropBeam: public PyFITKPhyscisPropBase
    {
    public:
        explicit PyFITKPhyscisPropBeam(const QString& name);
        explicit PyFITKPhyscisPropBeam() = default;
        virtual ~PyFITKPhyscisPropBeam() = default;
        /**
         * @brief   设置惯性矩
         * @param[i] Ixx:截面惯性矩x
         * @param[i] Iyy:截面惯性矩y
         * @param[i] Jzz:截面极惯性矩
         * @param[i] Qzz:扭转常数
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setMoments(double Ixx, double Iyy, double Jzz, double Qzz);
        /**
         * @brief  设置截面属性
         * @param[i] area:面积
         * @param[i] perimeter:周长
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setCrossSection(double area, double perimeter);
        /**
         * @brief  设置剪切中心偏移量
         * @param[i] ShearOffsetX:剪心偏移x
         * @param[i] ShearOffsetY:剪心偏移y
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setShearCenterOffset(double ShearOffsetX, double ShearOffsetY);
        /**
         * @brief  设置材料
         * @param[i] material:材料
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setMaterial(const QString& material);
        /**
         * @brief  创建物理属性
         * @param[i] name 名称
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool createPhyscisProp(const QString& name);
    };
}
#endif
